package cn.cityhouse.avm.regression;

import org.apache.commons.math3.linear.RealVector;

/**
 * Abstract definition for AVM Regression
 * 
 * @author <a href="mailto:wangcl@lreis.ac.cn">ChenLiang Wang</a>
 *
 */
public interface AVMAbstractRegression {

	/**
	 * @return the calculated Adjusted R-squared for the regression model
	 */
	double calculateAdjustedRSquared();

	/**
	 * @return the calculated Fitted Value for the regression model
	 */
	RealVector calculateFittedValue();

	/**
	 * @return the calculated R-squared for the regression
	 */
	double calculateRSquared();

	/**
	 * @return the estimated AIC for the regression
	 */
	double estimateAIC();
	/**
	 * @return the estimated BIC for the regression
	 */
	double estimateBIC();
	/**
	 * @return the estimated AICc for the regression
	 */
	double estimateAICc();

	/**
	 * @return the estimated Fitted Value
	 */
	double[] estimateFittedValue();

	/**
	 * Return the number of the independent variables
	 * 
	 * @return the number of the independent variables
	 */
	int getK();

	/**
	 * Return the number of the row of data
	 * 
	 * @return the number of the row of data
	 */
	int getNrow();

	/**
	 * Print the summary information of regression.
	 */
	void printSummary();

}
